import java.util.*;
public class Test {
//    重载的规则:
//      方法名相同
//      方法的参数不同(参数个数或者参数类型)
//      方法的返回值类型不影响重载
    public static int add(int x, int y) {
        return x + y;
    }
    public static double add(double x, double y) {
        return x + y;
    }
    public static double add(double x, double y, double z) {
        return x + y + z;
    }
    public static void main1(String[] args) {
        int a = 12;
        int b = 20;
        int ret = add(a, b);
        System.out.println("ret = " + ret);
        double a2 = 15.5;
        double b2 = 20.5;
        double ret2 = add(a2, b2);
        System.out.println("ret2 = " + ret2);
        double a3 = 1.5;
        double b3 = 1.5;
        double c3 = 4.5;
        double ret3 = add(a3, b3, c3);
        System.out.println("ret3 = " + ret3);
    }













//数组中重复的数字
//        在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的，但不知道有几个数字是重复的。也不知道每个数字重复几次。
//        请找出数组中任意一个重复的数字。 例如，如果输入长度为7的数组[2,3,1,0,2,5,3]，那么对应的输出是2或者3。存在不合法的输入的话输出-1
    public static int duplicate(int[] numbers) {
        int i = 0;
        while (i < numbers.length) {
            if (numbers[i] == i){//第i个位置的元素就是i
                i++;
                continue;
            }
            else if(numbers[i] == numbers[numbers[i]]){//不同位置上出现了相同的元素，即元素重复
                return numbers[i];
            }
            else{
                int tmp = numbers[numbers[i]];//交换元素
                numbers[numbers[i]] = numbers[i];
                numbers[i] = tmp;
            }
        }
        return -1;
    }
    public static void main2(String[] args) {
        int[] arr= {2,3,1,0,2,5,3};
        System.out.println(duplicate(arr));
    }







//    数组中只出现一次的两个数字
//      一个整型数组里除了两个数字（a,b）只出现一次，其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param array int整型一维数组
     * @return int整型一维数组
     */
    public static int[] FindNumsAppearOnce (int[] array) {
        // write code here
        //将每个元素异或求c=a^b
        int c = 0;
        for (int i = 0; i < array.length; i++) {
            c ^= array[i];
        }
        //求c二进制第一次出现1是哪一位 二进制tmp 1出现的位置就是c第一次出现1的位置  设第n位
        int tmp = 1;
        while ((c & tmp) == 0){
            tmp <<= 1;
        }
//        如果array[i]第n位是1  那么^a  否则^b
        int a = 0;
        int b = 0;
        for (int i = 0; i < array.length; i++) {
            if ((array[i] & tmp) == tmp){
                a ^= array[i];
            }
            else {
                b ^= array[i];
            }
        }
//        返回值是一个数组 所以我们要先new一个数组 再return
        return a < b ? new int[]{a,b}: new int[]{b,a};

    }
    public static void main3(String[] args) {
        int[] arr = {4,2,2,3,3,5};
        int[] sum = FindNumsAppearOnce(arr);
        System.out.println(Arrays.toString(sum));
    }







//    数组倒转
//    输入6个整数，先将其输出然后再将数组倒转，再次输出数组
    public static void main4(String[] args) {
        int[] arr = new int[6];
        Scanner sc = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
        }
        System.out.println(Arrays.toString(arr));
        int left = 0;
        int right = arr.length-1;
        while (left <= right){
            int tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
            left++;
            right--;
        }
        System.out.println(Arrays.toString(arr));
    }




//    小球走过路程计算
//    一球从h米高度自由落下，每次落地后反弹回原高度的一半再落下，求它在第n次落地时共经过了多少米？第n次反弹多高？
//输入描述：
//输入小球的初始高度和落地的次数（先输入小球初始高度再输入反弹次数）
//输出描述：
//输出小球反弹的高度和经过的距离（先输出反弹的高度再输出经过的距离，中间用空格隔开） 保留3为小数
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int h = sc.nextInt();
        int n = sc.nextInt();
        double sum = h;
        double height = h * 1.0;
        for (int i = 0; i < n - 1; i++) {
            height /= 2.0;
            sum += 2*height;
        }
        height /= 2.0;
        System.out.println(String.format("%.3f",height) +" "+ String.format("%.3f",sum));
    }
















}
